package com.zjzaki.thingsboard.util;

import android.content.Context;

import com.zjzaki.thingsboard.entity.LoginMsg;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileHelper {

    private Context mContext;

    public FileHelper() {
    }

    public FileHelper(Context mContext) {
        super();
        this.mContext = mContext;
    }

    /*
     * 这里定义的是一个文件保存的方法，写入到文件中，所以是输出流
     * */
    public void save(String filename, String fileContent) {
        //这里我们使用私有模式,创建出来的文件只能被本应用访问,还会覆盖原文件哦
        FileOutputStream output = null;
        try {
            output = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
            output.write(fileContent.getBytes());  //将String字符串以字节流的形式写入到输出流中
            output.close();         //关闭输出流
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public boolean isExist(String filename){
        try {
            mContext.openFileInput(filename);
        } catch (FileNotFoundException e) {
            return false;
        }
        return true;
    }

    /*
     * 这里定义的是文件读取的方法
     * */
    public String read(String filename){
        StringBuilder sb = null;
        //打开文件输入流
        FileInputStream input = null;
        try {

            input = mContext.openFileInput(filename);

            byte[] temp = new byte[1024];
            sb = new StringBuilder("");
            int len = 0;
            //读取文件内容:
            while ((len = input.read(temp)) > 0) {
                sb.append(new String(temp, 0, len));
            }
            //关闭输入流
            input.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return sb.toString();
    }

    /**
     * 得到登录信息 ，token,refreshToken,scope
     * @param filename 文件名
     * @return LoginMsg实体
     */
    public LoginMsg getLoginMsg(String filename){
        //从文件中得到数据
        String msg = read(filename);
        //拆分数据
        String[] s = msg.split(" ");
        //分别对应 token，refreshToken ,scope
        LoginMsg loginMsg = new LoginMsg(s[0],s[1],s[2]);
        //返回实体
        return loginMsg;
    }

    /**
     * 删除文件
     * @param filename 文件名
     * @return 是否删除成功
     */
    public boolean deleteFile(String filename){
        return mContext.deleteFile(filename);
    }

}
